﻿using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Threading.Tasks;
using VisionCloud.Core.Model.Ms;
using VisionCloud.Domain.DtoModel.Ms;

namespace VisionCloud.Domain.Repository.Interface.Ms
{
    public interface IMsPointTypeMeasureItemRepository : IBaseRepository<MsPointTypeMeasureItem>
    {
        Task<List<MsPointTypeMeasureItem>> GetList(MsPointTypeMeasureItemCondition condition);

        Task<List<MsPointTypeMeasureItem>> GetTemplateList();

        Task<List<MsPointTypeMeasureItem>> GetDataByProjects(Guid[] projectIds);

        Task<List<MsPointTypeMeasureItem>> GetListAsNoTracking(Expression<Func<MsPointTypeMeasureItem, bool>> expression = null);

        /// <summary>
        /// 根据项目阶段Id过滤
        /// </summary>
        /// <param name="projectIds">项目Id</param>
        /// <param name="excludeStandard">过滤项目阶段Id</param>
        /// <returns></returns>
        Task<List<MsPointTypeMeasureItem>> GetDataByProjectsWithStandardId(Guid[] projectIds, Guid excludeStandard);

        /// <summary>
        /// 根据项目、阶段和站点类型取
        /// </summary>
        /// <param name="projectId"></param>
        /// <param name="projectStandardId"></param>
        /// <param name="pointTypeId"></param>
        /// <returns></returns>
        Task<List<MsPointTypeMeasureItem>> GetDataByProjectsAndPointType(Guid projectId, Guid projectStandardId, Guid pointTypeId);
    }
}